﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Corsat.Web._2013.Administration
{
    public partial class TroubleShooting : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnReset_Click(object sender, EventArgs e)
        {
            //Environment.Exit();
            RestartAppPool();
        }
        public static bool RestartAppPool()

        {

            //First try killing your worker process

            try

            {

                //Get the current process

                Process process = Process.GetCurrentProcess();

                // Kill the current process

                process.Kill();

                // if your application have no rights issue then it will restart your app pool

                return true;

            }

            catch (Exception ex)

            {

                //if exception occoured then log exception

                //Logger.Log("Restart Request Failed. Exception details :-" + ex);

            }

 

            //Try unloading appdomain

            try

            {

                //note that UnloadAppDomain requires full trust

                HttpRuntime.UnloadAppDomain();

                return true;

            }

            catch (Exception ex)

            {

                //if exception occoured then log exception

                //Logger.Log("Restart Request Failed. Exception details :-" + ex);

            }

 

            //Finally automating the dirtiest way to restart your application pool

 

            //get the path of web.config

            string webConfigPath= HttpContext.Current.Request.PhysicalApplicationPath + "\\web.config";

            try

            {

                //Change the last modified time and it will restart pool

                File.SetLastWriteTimeUtc(webConfigPath, DateTime.UtcNow);

                return true;

            }

            catch (Exception ex)

            {

                //if exception occoured then log exception

                //Logger.Log("Restart Request Failed. Exception details :-" + ex);

            }

 

            //Still no hope, you have to do something else.

            return false;

        }

    }
    
}